package com.my.lab.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author Administrator
 *
 */
public class InputStreamUtils {
    
    final static int BUFFER_SIZE = 4096; 
    
    
    
    /**
     * 
     * InputStream 转 String
     * @param is
     * @param charsetName
     * @return
     * @throws Exception
     */
    public static String InputStreamTOString(InputStream is ,String charsetName ) throws Exception {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] data = new byte[BUFFER_SIZE] ;
        int count = -1 ;
        while((count = is.read(data, 0, BUFFER_SIZE) ) != -1) {
            bos.write(data, 0, count);
        }
        return new String(bos.toByteArray(), charsetName);
    }
    
    /**  
     * 将String转换成InputStream  
     * @param in  
     * @return  
     * @throws Exception  
     */  
    public static InputStream StringTOInputStream(String in ,String encoding) throws Exception{  
          
        ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes(encoding));  
        return is;  
    }  
    
    /**  
     * 将InputStream转换成byte数组  
     * @param in InputStream  
     * @return byte[]  
     * @throws IOException  
     */  
    public static byte[] InputStreamTOByte(InputStream in) throws IOException{  
          
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
        byte[] data = new byte[BUFFER_SIZE];  
        int count = -1;  
        while((count = in.read(data,0,BUFFER_SIZE)) != -1)  
            outStream.write(data, 0, count);  
          
        data = null;  
        return outStream.toByteArray();  
    }  

    
    /**  
     * 将byte数组转换成InputStream  
     * @param in  
     * @return  
     * @throws Exception  
     */  
    public static InputStream byteTOInputStream(byte[] in) throws Exception{  
          
        ByteArrayInputStream is = new ByteArrayInputStream(in);  
        return is;  
    }  
    
    /**  
     * 将byte数组转换成String  
     * @param in  
     * @return  
     * @throws Exception  
     */  
    public static String byteTOString(byte[] in , String encoding) throws Exception{  
          
        InputStream is = byteTOInputStream(in);  
        return InputStreamTOString(is,encoding);  
    } 
}
